Themifyのテーマで投稿が保存できない時の対処方法
実際のWeb画面を見ながら作成できるフロントエンドが開かなかったり、ページの外観や詳細設定をするバックエンドで保存ができない状況に陥ることがことがあります。その原因はThemifyのテーマやプラグインに問題がある訳ではなく、サーバーのセキュリティー設定に起因することがほとんどです。
画像を含んだ投稿や固定ページがフロントエンドが開けなかったり、バックエンドが保存できなくなったりしたその時の対処方法を解説します。
1 保存できない時に現れる症状
すでに公開した投稿や固定ページで画像を含んでいるとフロントエンドで開けない。また、バックエンドでは各モジュールを追加してコンテンツを作成できるが保存することができない。
新規作成する投稿や固定ページは、フロントエンド・バックエンドともに各モジュールを追加してコンテンツを作成することができるが保存することができない。
簡単に言うと、コンテンツに画像を含むと保存できない という症状が発生することがあります。
フロントエンド:読み込み中のアイコンがクルクルと回り続けコンテンツを作成する事が出来ません。
バックエンド:保存ボタンをクリックすると「undefined」と表示され保存する事ができません。
昨日までThemifyは正常に保存できていたのに、テーマやプラグインのアップデートを行っていないにもかかわらず、急に保存できなくなることがあります。原因は、サーバーに設置されているWAFと呼ばれるセキュリティー機能により発生することがほとんどです。ある日突然症状がでるのは、WAFが更新されたことによるものと推測されます。
2 保存できない原因はサーバーのWAF設定とその回避方法
そもそもWAFとはなんでしょうか?
WAF(ワフ)とはWeb Application Firewallの略で、Webアプリケーションの脆弱性を突いた攻撃からWeb再度サイトを守るためのセキュリティー対策の一つです。
セキュリティー対策のためにサーバーに設置されているWAFが、Themifyの正常な動作によって吐き出されるコードを攻撃と誤検知することにより発生します。
WAFの設定を変更できればThemifyの動作に影響を与えないようにできる訳ですが、共用サーバーを利用している限りサーバー全体のセキュリティー対策であるWAFの設定を変更してもらうことはできません。
よって、WAFが誤検知しているセキュリティー項目を自分のサイトでは検知しないように.htaccessに回避コードを追記したりプラグインの設定を変更したりしてWAFの誤検知が発生しないようにすれば回避できるようになります。
3 WAFのエラーログを確認する
サーバーの管理画面からWAFの設定やログ表示が行えるサーバーが多くなっています。まずは、WAFのログを確認してエラーの発生状況を確認します。
この写真はロリポップの管理画面の場合です。
管理画面のメニューの中から「WAF設定」をクリックして、ログ参照を開きます。(他のサーバーの場合もWAF設定やログ情報の項目を探してください。)
管理画面からWAFの設定を行えるサーバーは、ロリポップの他XSERVER、お名前.com、SAKURAサーバー、mixhost、などがあります。
Themifyのフロントエンドが開けなかったり、バックエンドで保存できなかった場合は、フロントエンドを開いた時又はバックエンドで保存ボタンをクリックした時にエラーが発生してログに記録されます。
写真の例で言うと
アクセス元のIPアドレスが6月15日1時32分に接続した時、WAFの「xss-try-11」のセキュリティーコードが「/wp-admin/admin-ajax.php」の動作を検知したことにより「admin-ajax.php」の動作を制限した。
とログを読むことができます。
言い換えれば、「admin-ajax.php」の動作がWAFにより停止させられたことによりフロントエンドが開かなかったり、バックエンドが保存できなくなったと言えます。
本当にWAFが原因であるか確かめるために、サーバーの管理画面でWAFを無効にしてみましょう。(WAFの設定が無効になるまで5分~10分かかる場合があります。)
フロントエンドが開け、バックエンドで保存ができるようになっていればこのWAFを有効にしていることが原因であると確定できます。
原因が確定した訳ですが、このままWAFを無効にしておくのはセキュリティー上好ましくありません。原因の「admin-ajax.php」がWAFに誤検知されないようにできればWAFを有効にしてもThemifyは正常に作動するはずです。
忘れない様に「無効」にしたWAFの設定を「有効」に戻しておいてください。
4-1 プラグインを使用してWAFの誤検知を回避する方法
サーバーに設置されているWAFのセキュリティーシステムを提供元が「JP-Secuer」という会社であればプラグインを使用してWAFの誤検知を回避することができます。
お勧めのプラグインで紹介したログインURLアドレスを任意のアドレスに変えることができる『SiteGuard WP Plugin』(不正ログインにはこれで防御『SiteGuard WP Plugin』の設定方法)を提供している会社が、実は「JP-Secuer」なんです。
すでに「SiteGuard WP Plugin」がインストールされており、かつ、サーバーのWAFのシステムを「JP-Secuer」が提供する「SiteGuard Lite」を使用している場合は、「SiteGuard WP Plugin」の設定を少し書き加えるだけでWAFの誤検知を回避できます。
「SiteGuard WP Plugin」がインストールされていることを前提に説明します。インストールの方法が判らない方はこちらを先に読みインストールを完了させてください。
ダッシュボードのSiteGuardの項目から「WAFチューニングサポート」をクリックします。
「新しいルールを追加」をクリックします。
WAFのログを確認した画面に戻り、検出したシグネチャと対象になっているファイルを入力して「保存」をクリックします。
ログにシグネチャが記載されていない場合は、サーバーのサポートに問い合わせてください。その際「日時、接続IPアドレス、対象になっているファイルのURLアドレス」を伝えWAFの誤検知によりテーマに不具合が発生しているのでSiteGuard WP Pluginで回避するためにシグネチャを知りたい と伝えてください。
新しいルールを保存して、WAFチューニングサポートを「ON」にし「ルールを適用」をクリックして設定は完了です。
WAFの回避設定が有効に作動しているか、バックエンドで作成した投稿や画像を含んだ投稿を開いてThemifyが正常に作動するか確認してください。
4-2 .htaccessでWAFの誤検知を回避する方法
サーバーに設置されているWAFが「JP-Secuer」社製のものでなかったり、「SiteGuard WP Plugin」をインストールしたくない場合は、.htaccessにコードを追加することによりWAFの誤検知を回避することができます。
※ このコードはWAFがSiteGuard Liteを使用している場合のコードになります。WAFがSiteGuard Lite以外のものである場合は、サポートに問い合わせてコードを確認してください。
.htaccessについて知りたい場合は『.htaccessでベーシック認証・IPアドレス制御・リダイレクトする方法』を読んでください。
.htaccessは重要なファイルです。何らかの原因により.htaccessの記載内容にミスがあるとサイトが表示できなくなったりします。作業前の状態にすぐに戻せるようにコピーを取っておくことをお忘れなく!
SiteGuard_User_excludes に半角文字で空欄をあけてシグネチャを追記します。
シグネチャの部分はWAFのログに従って書き換えてください。
追記した.htaccessをアップロードしたら、Themifyの動作状況を確認してみましょう。
画像を含んだ投稿や固定ページが保存できるようになっていたら成功です。
個人的にはSiteguardプラグインのWAFチューニングサポートより.htaccsessにWAFの誤検知の回避コードを記入する方法を勧めます。
理由は、Web表示やテーマ・プラグインの挙動がおかしくなることが多々あります。その際に原因を探るのにプラグインを無効にして状況を確認するのですが、WAFチューニングサポートを利用しているとプラグインを無効にすると設定した回避コードも無効になってしまうからです。
.htaccessにコードを追記するのは面倒ですが、一回設定しておけばプラグインの有効無効に影響を受けなくて済むので結果的に作業効率は高くなります。.htaccessのバックアップをしっかり取っておけば万が一間違えてもすぐに戻せば影響を最小限に抑えれます。
.htaccessの編集方法については「.htaccessでベーシック認証・IPアドレス制御・リダイレクトする方法」を参考にしてください。
5 対策をしても保存できない状況が続いている場合の対処方法
冒頭に説明したThemifyが保存できない状況が続いている場合は、テーマやプラグインのバージョンが最新のものであるか確認してください。
それ以外の要因としては、ワードプレスのメジャーリリースとの祖語やプラグイン同士の干渉などにより保存できない状況が発生しているかもしれません。
Themifyのメンバー専用フォーラムで同様の相談が寄せられていないか確認したり、フォーラムに参加してサポートチームに問題解決の協力を求めてください。
テーマとプラグインがそれぞれ別の会社のものを使っていると自社製品にバグがなければ対応してもらうことはほとんど期待できません。しかし、Themifyはテーマとプラグインを一体開発し提供しているので、テーマやプラグイン同士の競合による不具合も対応してもらえます。
また、ネットショップ用のWoocommerce、SEO対策のYoastやJetpack、多言語用のWPML、イベントカレンダーのWP-SHINDIG、コンタクトフォームのCONTACT FORM 7,メーリングソフトのMailChimp の動作保証もしているので、これらのプラグインが更新によりThemifyに不具合が発生した場合でも対応してもらえます。
私は英語は苦手どころか嫌いで全く話せませんが、Googleの無料翻訳を使用してThemifyのサポートチームと充分やり取りすることができています。
また、Themifyのサポートチームは不具合の解消だけでなく、技術的なサポートもしてくれます。ドラッグ&ドロップだけでは作成出来ないサイトデザインの変更などにも協力してくれます。
この記事があなたのサイト作成にお役に立てれば幸いです。
※※※ 追 記 ※※※
6 Builder V4でフロンエンドが開かない場合の設定
ThemifyのテーマがすべてBuilder V4にアップグレードされました。
これにより更に使いやすくなったのですが、メジャーアップグレードのためバグがちょくちょく発生しています。
小見出しのフロントエンドが開かないのはバグではないようですが、メジャーアップグレード前の設定にしているとフロントエンドが作動しないので設定を変える必要があります。
Themifyのテーマ > Themifyの設定 > テーマの設定 > スクリプトの最小化 で下の写真のようにスクリプトとミニCSS/JSを無効にしておく必要があります。
フレームワークがVer.4以上のテーマでフロントエンドが作動しない場合は、このスクリプトの設定か先に説明した「 WAFの誤検知」によるものがほとんどです。
Themifyのサポートに問い合わせる前にこれらの状況を確認してみてください。